package org.example.flea_market_mvc.entity;

import com.baomidou.mybatisplus.annotation.*;
import lombok.Data;


import java.time.LocalDateTime;

/**
 * 用户表
 *
 * @author chensanju
 * @date 2025-06-10 12:49:51
 */
@Data
@TableName("user") // 显式指定表名（若表名与类名一致可省略）
public class User {

    /**
     * 用户ID，主键自增
     */
    @TableId(type = IdType.AUTO) // 自增主键策略
    private Long id;

    /**
     * 用户名，唯一标识
     */
    @TableField("username") // 显式映射字段（若属性名与字段一致可省略）
    private String username;
    /**
     * 加密后的用户密码
     */
    private String password;
    /**
     * 用户邮箱，用于登录和通知
     */
    private String email;
    /**
     * 用户联系电话
     */
    private String phone;
    /**
     * 用户收货地址
     */
    private String address;
    /**
     * 用户角色：1-系统管理员，2-分类管理员，3-注册用户，4-游客
     * 建议使用枚举替代硬编码（如 UserRoleEnum.REGISTERED.getCode()）
     */
    private Integer role;
    /**
     * 用户状态：1-正常，0-禁用
     */
    private Integer status;
    /**
     * 注册时间
     */
    @TableField(fill = FieldFill.INSERT) // 插入时自动填充
    private LocalDateTime createTime;
    /**
     * 最后登录时间
     */
    @TableField(fill = FieldFill.UPDATE) // 更新时自动填充
    private LocalDateTime lastLoginTime;
    /**
     * 账号过期时间（用于Token或账号有效期控制）
     */
    private LocalDateTime expireTime;
    /**
     * 积分（可用于评价、交易奖励）
     */
    private Integer points;
    /**
     * 头像URL
     */
    private String avatar;
    /**
     * 简介（卖家展示）
     */
    private String profile;
}